don't access widget->window if the widget is not realized.
authorMichael Natterer <mitch@imendio.com>
Tue, 16 Sep 2008 17:47:30 +0000 (17:47 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Tue, 16 Sep 2008 17:47:30 +0000 (17:47 +0000)
2008-09-16  Michael Natterer  <mitch@imendio.com>

* gtk/gtkwidget.c (_gtk_widget_set,get_pointer_window): don't
access widget->window if the widget is not realized.

svn path=/trunk/; revision=21403

ChangeLog
gtk/gtkwidget.c

index 140ce37852c066a6cfdd278ba173f913ccc01299..1b30e718376f4d772f2801a46dbd6827915beb13 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-09-16  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkwidget.c (_gtk_widget_set,get_pointer_window): don't
+       access widget->window if the widget is not realized.
+
 2008-09-16  Matthias Clasen  <mclasen@redhat.com>
 
        Bug 551987 – GtkPaned redrawing problem
index 79a0f48bb16239d3b43f8fcabd8a69f359e0505b..bbb2bd6942d1a395d64f919fedef2bab66cfb0ed 100644 (file)
@@ -8059,20 +8059,23 @@ _gtk_widget_peek_colormap (void)
  * _gtk_widget_set_pointer_window:
  * @widget: a #GtkWidget.
  * @pointer_window: the new pointer window.
- *  
+ *
  * Sets pointer window for @widget.  Does not ref @pointer_window.
  * Actually stores it on the #GdkScreen, but you don't need to know that.
  **/
 void
-_gtk_widget_set_pointer_window   (GtkWidget *widget,
-                                 GdkWindow *pointer_window)
+_gtk_widget_set_pointer_window (GtkWidget *widget,
+                                GdkWindow *pointer_window)
 {
-  GdkScreen *screen;
-  
   g_return_if_fail (GTK_IS_WIDGET (widget));
 
-  screen = gdk_drawable_get_screen (GDK_DRAWABLE (widget->window));
-  g_object_set_qdata (G_OBJECT (screen), quark_pointer_window, pointer_window);
+  if (GTK_WIDGET_REALIZED (widget))
+    {
+      GdkScreen *screen = gdk_drawable_get_screen (widget->window);
+
+      g_object_set_qdata (G_OBJECT (screen), quark_pointer_window,
+                          pointer_window);
+    }
 }
 
 /**
@@ -8083,14 +8086,18 @@ _gtk_widget_set_pointer_window   (GtkWidget *widget,
  * to, or %NULL.
  **/
 GdkWindow *
-_gtk_widget_get_pointer_window   (GtkWidget *widget)
+_gtk_widget_get_pointer_window (GtkWidget *widget)
 {
-  GdkScreen *screen;
-
   g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
 
-  screen = gdk_drawable_get_screen (GDK_DRAWABLE (widget->window));
-  return g_object_get_qdata (G_OBJECT (screen), quark_pointer_window);
+  if (GTK_WIDGET_REALIZED (widget))
+    {
+      GdkScreen *screen = gdk_drawable_get_screen (widget->window);
+
+      return g_object_get_qdata (G_OBJECT (screen), quark_pointer_window);
+    }
+
+  return NULL;
 }
 
 static void